package org.example.utils;

import com.alibaba.druid.pool.DruidDataSource;

import java.sql.Connection;

public class DruidUtil {
    private static final DruidDataSource dataSource;

    static {
        dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/jsp?useSSL=false&serverTimezone=UTC");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
//
//        dataSource.setUrl("jdbc:mysql://82.157.75.154:3306/jsp?useSSL=false&serverTimezone=UTC");
//        dataSource.setUsername("zds");
//        dataSource.setPassword("3349828673");


        // 连接池基本配置
        dataSource.setInitialSize(5);      // 初始化连接数
        dataSource.setMaxActive(20);       // 最大连接数
        dataSource.setMinIdle(5);          // 最小空闲连接
        dataSource.setMaxWait(60000);      // 最大等待时间（毫秒）

        // 连接有效性检查
        dataSource.setValidationQuery("SELECT 1");
        dataSource.setTestWhileIdle(true);
        dataSource.setTestOnBorrow(false);
        dataSource.setTestOnReturn(false);

        // 连接池回收策略
        dataSource.setTimeBetweenEvictionRunsMillis(60000); // 检测空闲连接的间隔
        dataSource.setMinEvictableIdleTimeMillis(300000);   // 最小空闲时间

        // 配置监控统计拦截的filters
        try {
            dataSource.setFilters("stat,wall"); // 开启 SQL 监控和防火墙
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 获取连接
    public static Connection getConnection() throws Exception {
        return dataSource.getConnection();
    }


}